package com.czmh.etc.onlinepubsys.entity.mingchuang;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.czmh.etc.onlinepubsys.constants.mingchuang.CertifiType;
import com.czmh.etc.onlinepubsys.constants.mingchuang.ChargeType;
import com.czmh.etc.onlinepubsys.constants.mingchuang.VehColorType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@AllArgsConstructor
@NoArgsConstructor
@Setter@Getter
@ApiModel("车辆具体信息")
@TableName("mingchuang_carinfo")
public class CarInfo {
    @TableId
    @JSONField(serialize = false)
    private String id;

    @ApiModelProperty("用户ID")
    @TableField("user_id")
    @JSONField(serialize = false)
    private String userId;

    @ApiModelProperty("车牌号")
    @TableField("vehPlate")
    private String vehPlate; //车牌号

    @ApiModelProperty("车牌颜色 值见附录")
    @TableField("vehColor")
    private Integer vehColor = VehColorType.VEHCOLOR_BLUE; //车牌颜色

    @ApiModelProperty("收费车型 1-客车 11-货车")
    @TableField("type")
    private Integer type = ChargeType.PASSENGER_CAR_1; //收费车型

    @ApiModelProperty("车主姓名")
    @TableField("ownerName")
    private String ownerName; //车主姓名

    @ApiModelProperty("车主证件类型 值见附录")
    @TableField("ownerIdType")
    private Integer ownerIdType = CertifiType.CERTIFI_TYPE_ID; //车主证件类型

    @ApiModelProperty("车主证件号码")
    @TableField("ownerIdNum")
    private String ownerIdNum; //车主证件号码

    @ApiModelProperty("车主电话")
    @TableField("ownerTel")
    private String ownerTel; //车主电话

    @ApiModelProperty("紧急联系人")
    @TableField("contact")
    private String contact; //紧急联系人

    @ApiModelProperty("行驶证车辆类型")
    @TableField("vehicleType")
    private String vehicleType; //行驶证车辆类型

    @ApiModelProperty("行驶证品牌型号")
    @TableField("vehicleModel")
    private String vehicleModel; //行驶证品牌型号

    /**
     *  1-家庭自用
     *  2-非营业客车
     *  3-营业客车
     *  4-非营业货车
     *  5-营业货车
     *  6-特种车
     *  7-挂车
     *  8-应急救援车
     */
    @ApiModelProperty("车辆使用性质 1-家庭自用 2-非营业客车 3-营业客车 4-非营业货车 5-营业货车 6-特种车 7-挂车 8-应急救援车")
    @TableField("useCharacter")
    private Integer useCharacter; //车辆使用性质

    @ApiModelProperty("车辆识别代号")
    @TableField("vin")
    private String vin; //车辆识别代号

    @ApiModelProperty("发动机号")
    @TableField("engineNum")
    private String engineNum; //发动机号

    @JSONField(format = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("注册日期")
    @TableField("registerDate")
    private Date registerDate; //注册日期

    @JSONField(format = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("发证日期")
    @TableField("issueDate")
    private Date issueDate; //发证日期

    @ApiModelProperty("档案编号")
    @TableField("fileNum")
    private String fileNum; //档案编号

    @ApiModelProperty("核定载人数")
    @TableField("approvedCount")
    private Integer approvedCount; //核定载人数

    @ApiModelProperty("总质量")
    @TableField("totalMass")
    private Integer totalMass; //总质量

    @ApiModelProperty("整备质量")
    @TableField("maintenanceMass")
    private Integer maintenanceMass; //整备质量

    @ApiModelProperty("核定载质量")
    @TableField("permittedWeight")
    private Integer permittedWeight; //核定载质量

    @ApiModelProperty("车长")
    @TableField("vehLength")
    private Integer vehLength; //车长

    @ApiModelProperty("车宽")
    @TableField("vehWidth")
    private Integer vehWidth; //车宽

    @ApiModelProperty("车高")
    @TableField("vehHeight")
    private Integer vehHeight; //车高

    @ApiModelProperty("准牵引总质量")
    @TableField("permittedTowWeight")
    private Integer permittedTowWeight; //准牵引总质量

    @ApiModelProperty("车轮数量")
    @TableField("wheelCount")
    private Integer wheelCount; //车轮数量

    @ApiModelProperty("车轴数")
    @TableField("axleCount")
    private Integer axleCount; //车轴数

    @ApiModelProperty("轴距")
    @TableField("axleDistance")
    private Integer axleDistance; //轴距

    @ApiModelProperty("轴型")
    @TableField("axisType")
    private String axisType; //轴型

    @ApiModelProperty("车辆特征描述")
    @TableField("vehFeature")
    private String vehFeature; //车辆特征描述

    @ApiModelProperty(notes = "个人用户编码/经办人编码")
    @TableField("cs_user_no")
    private String csUserNo;
}
